package com.huiquan.framework.utils;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelUtil {

	/**
	 * 根据标题数组将数据维护到表的第一行
	 * 
	 * @param sheet
	 * @param titles
	 */
	public static void setTitleToFirstRow(XSSFWorkbook workbook, String[] titles) {
		for (Sheet sheet : workbook) {
			Row row = sheet.createRow(0);
			for (int i = 0; i < titles.length; i++) {
				Cell cell = row.createCell(i, Cell.CELL_TYPE_STRING);
				cell.setCellValue(titles[i]);
			}
		}
	}

	/**
	 * 删除标题行
	 * 
	 * @param sheet
	 */
	public static void deleteTitleRow(Sheet sheet) {
		sheet.shiftRows(1, 2, -1);
	}
	
	/**
	 * 返回一个颜色样式
	 * @param w
	 * @param color
	 * @return
	 */
	public static XSSFCellStyle getFontColorStyle(XSSFWorkbook w, Short color) {
		XSSFCellStyle style = w.createCellStyle(); // 样式对象
		Font ztFont = w.createFont();
		ztFont.setColor(color);
		
		style.setFont(ztFont);
		return style;
	}
	
	/**
	 * 为单元格赋值和样式
	 * 
	 * @param row
	 *            行
	 * @param i
	 *            列
	 * @param string
	 *            内容
	 */
	public static void setCell(Row row, int i, String value, CellStyle style) {
		Cell cell = row.createCell(i);
		cell.setCellValue(value);
		cell.setCellStyle(style);
	}

	/**
	 * 为单元格赋值
	 * 
	 * @param row
	 *            行
	 * @param i
	 *            列
	 * @param string
	 *            内容
	 */
	public static void setCell(Row row, int i, String value) {
		Cell cell = row.createCell(i);
		cell.setCellValue(value);
	}

	/**
	 * 获得默认标题栏样式
	 * 
	 * @param wb
	 *            workbook对象
	 * @return
	 */
	public static CellStyle getDefaultTitleStyle(Workbook wb) {
		CellStyle style = wb.createCellStyle(); // 创建单元格格式
		Font font = wb.createFont(); // 创建字体;
		font.setFontName("宋体"); // 设置字体
		font.setFontHeightInPoints((short) 20); // 设置字体大小
		font.setBold(true); // 设置字体加粗
		style.setFont(font);
		style.setAlignment(CellStyle.ALIGN_CENTER); // 设置居中
		return style;
	}

	/**
	 * 获得默认表头样式
	 * 
	 * @param wb
	 *            workbook对象
	 * @return
	 */
	public static CellStyle getDefaultTableHeadStyle(Workbook wb) {
		CellStyle style = wb.createCellStyle(); // 创建单元格格式
		Font font = wb.createFont(); // 创建字体;
		font.setFontName("微软雅黑"); // 设置字体
		font.setBold(true); // 设置字体加粗
		style.setFont(font);
		style.setAlignment(CellStyle.ALIGN_CENTER); // 设置居中
		return style;
	}

	/**
	 * 获得默认表中单元格样式
	 * 
	 * @param wb
	 *            workbook对象
	 * @return
	 */
	public static CellStyle getDefaultTableCellStyle(Workbook wb) {
		CellStyle style = wb.createCellStyle(); // 创建单元格格式
		Font font = wb.createFont(); // 创建字体;
		font.setFontName("宋体"); // 设置字体
		style.setFont(font);
		style.setAlignment(CellStyle.ALIGN_CENTER); // 设置居中
		return style;
	}
}
